1. Field of the Invention
The present invention relates to an MPEG (Moving Picture Experts Group)-1 audio layer III decoding device, and particularly an MPEG-1 audio layer III capable of fast decoding processing.
2. Description of the Background Art
The MPEG audio is ISO/IEC (International Organization for Standardization and International Electrotechnical Commission) standards of stereo-audio coding with high quality and high efficiency, and is standardized in parallel with coding of motion pictures in MPEG. As a result, products relating to MPEG audio products have recently been developed.
A bit stream of the MPEG audio is formed of frames. Each frame is a minimum unit of data which allows decoding to an audio signal by itself, and always contains a constant sample number of data.
Referring to FIG. 1, a frame is formed of a header 1, an error check 2, audio data 3 and an ancillary data (external data) 4. Header 1 is a bit stream portion including information such as a synchronization word, a sampling frequency, a bit rate and others. Error check 2 is optional data, and is a bit stream portion including information for error detection. Audio data 3 is a bit stream portion including information related to an audio sample. Ancillary data 4 is a portion into which data other than MPEG audio can be arbitrarily inserted.
In the MPEG-1 audio layer III, which will be referred to as xe2x80x9cMP3xe2x80x9d hereinafter, each frame includes 1152 sample data. Each frame including 1152 samples is divided into two granules each including 576 samples.
A breakdown of the 576 samples is as follows. For coding of MP3, an input signal is divided by a sub-band analyzing filter bank into 32 frequency bands based on time regions. The output of each band sent from the filter bank is 18 samples (this kind of output will also be represented as a xe2x80x9ca long blockxe2x80x9d hereinafter), or 6xc3x973 samples (this kind of output will also be referred to as a xe2x80x9cshort blockxe2x80x9d hereinafter). Then, each band is mapped to subdivided spectral lines by Modified Discrete Cosine Transform (which will be referred to as xe2x80x9cMDCTxe2x80x9d hereinafter). Frequency region samples of 18 or 6xc3x973=18 are obtained as the output of MDCT. Accordingly, the frequency resolution is equal to 32 bandsxc3x9718 samples=576 samples (each sample has an arbitrary data length).
Referring to FIG. 2, a decoder of audio data portion 3 in MP3 includes a bit stream decomposing portion 5 which decomposes the input bit string into side information 6 including bit allocation information and Huffman table information, a scale factor and Huffman code data, a scale factor decoder 7 which is connected to bit stream decomposing portion 5, and decodes the scale factor decomposed from the bit-stream based on side information 6, a Huffman decoder 8 which is connected to bit stream decomposing portion 5, and decodes Huffman code data decomposed from the bit-stream based on Huffman table information included in side information 6, an inverse quantizer 9 which is connected to bit stream decomposing portion 5, scale factor decoder 7 and Huffman decoder 8, and performs inverse quantization of the Huffman code data based on side information 6, scale factor and Huffman code data, and a HFB (Hybrid Filter Bank) 10 which is connected to inverse quantizer 9 and inversely maps the output of inverse quantizer 9 to reconstruct a time region signal.
HFB 10 includes a butterfly operating portion 11 which is connected to inverse quantizer 9, and conducts a butterfly operation or computation on the inversely quantized signal issued from inverse quantizer 9, an IMDCT operating portion 12 which is connected to butterfly operating portion 11, and conducts inverse MDCT (which will be referred to as xe2x80x9cIMDCTxe2x80x9d hereinafter) on the operation result of butterfly operating portion 11, and a sub-band composing portion 13 which is connected to IMDCT operating portion 12, and conducts sub-band composing processing on the operation result of IMDCT operating portion 12 using Polyphase Filter Bank (which will be referred to as xe2x80x9cPFBxe2x80x9d hereinafter).
Referring to FIG. 3, respective portions of the decoder for audio data portion 3 of MP3 operate as follows. In the following description, lengths of data to be handled are not restricted. Bit stream decomposing portion 5 extracts and analyzes header 1 of the received bit string (S14). Bit stream decomposing portion 5 decodes the side information 6, and extracts the Huffman code data and scale factor decomposed from the bit-stream (S15). Scale factor decoder 7 decodes the scale factor decomposed from the bit-stream based on side information 6 (S16). Huffman decoder 8 decodes the Huffman code data decomposed from the bit-stream based on the Huffman table information included in side information 6 (S17). As a result of decoding of the Huffman code data, the Huffman code data of 576 in number are decoded per granule. This number depends on the frequency resolution power.
Inverse quantizer 9 performs the inverse quantization of the Huffman code data based on side information 6, scale factor and Huffman code data (S18). The inverse quantization of the Huffman code data is performed according to the following formula (1):
Xr(i, j)=sign(is(i, j)xc3x97is(i, j)xc3x972P, 0xe2x89xa6ixe2x89xa631, 0xe2x89xa6jxe2x89xa617xe2x80x83xe2x80x83(1)
where Xr(i, j) represents a result of the inverse quantization, is(i, j) represents the Huffman code data, P represents a constant obtained from side information 6 and the scale factor, and sign(a) represents the sign of xe2x80x9caxe2x80x9d. Further, i represents the subband band number, and j represents the sample number of each subband output.
Butterfly operating portion 11 included in HFB 10 performs the butterfly operation between the sample data of 32 bands issued from inverse quantizer 9, using 8 samples near the band boundary at a time (S19). More specifically, the operation is performed according to the following formula (2):   "AutoLeftMatch"                                                                                                                                                                                                                  for                            ⁢                                                          xe2x80x83                                                        ⁢                                                          (                                                                                                i                                  =                                  0                                                                ;                                                                  i                                   less than                                   31                                                                ;                                                                  i                                  ++                                                                                            )                                                                                                                                                                                                                                      xe2x80x83                                                        ⁢                                                          for                              ⁢                                                              xe2x80x83                                                            ⁢                                                              (                                                                                                      j                                    =                                    0                                                                    ;                                                                      j                                     less than                                     8                                                                    ;                                                                      j                                    ++                                                                                                  )                                                            {                                                                                                                                                                                                                                                              xe2x80x83                                            ⁢                                                                                                    X                            ⁡                                                          (                                                              i                                ,                                                                  17                                  -                                  j                                                                                            )                                                                                =                                                                                                                    Xr                                ⁡                                                                  (                                                                      i                                    ,                                                                          17                                      -                                      j                                                                                                        )                                                                                            ⁢                                                              Cs                                ⁡                                                                  (                                  j                                  )                                                                                                                      -                                                                                          Xr                                ⁡                                                                  (                                                                                                            i                                      +                                      1                                                                        ,                                    j                                                                    )                                                                                            ⁢                                                              Ca                                ⁡                                                                  (                                  j                                  )                                                                                                                                                                    ;                                                                                                                                                                                      xe2x80x83                                ⁢                                                                            X                      ⁡                                              (                                                                              i                            +                            1                                                    ,                          j                                                )                                                              =                                                                                            Xr                          ⁡                                                      (                                                                                          i                                +                                1                                                            ,                              j                                                        )                                                                          ⁢                                                  Cs                          ⁡                                                      (                            j                            )                                                                                              +                                                                        Xr                          ⁡                                                      (                                                          i                              ,                                                              17                                -                                j                                                                                      )                                                                          ⁢                                                  Ca                          ⁡                                                      (                            j                            )                                                                                                                                ;                                ⁢                                  
                                }                                                                          (          2          )                    
In the formula (2), X(i, j) represents a result of the butterfly operation, and Cs(j) and Ca(j) represent constants determined for the sample numbers, respectively. As to X(i, i) not computed in formula (2), Xr(i, j) is substituted.
IMDCT operating portion 12 obtains data of N samples by folding back the coded N/2 samples, and then performs the inverse transformation (S20). The IMDCT processing for the sample band number i is performed according to the following formulas (3) and (4):                                                                         Z                i                            ⁡                              (                n                )                                      =                                          ∑                                  k                  =                  0                                                                      N                    /                    2                                    -                  1                                            ⁢                                                X                  ⁡                                      (                                          i                      ,                      k                                        )                                                  *                                  C                  ⁡                                      (                                          n                      ,                      k                                        )                                                                                ,                      0            ≤            n            ≤                          N              -              1                                      ⁢                  
                ⁢        where                            (        3        )                                          C          ⁡                      (                          n              ,              k                        )                          =                  cos          ⁡                      (                                          π                                  2                  ⁢                  N                                            ⁢                              (                                                      2                    ⁢                    n                                    +                  1                  +                                      N                    2                                                  )                            ⁢                              (                                                      2                    ⁢                    k                                    +                  1                                )                                      )                                              (        4        )            
where Zi(n) represents the intermediate result. N is a constant, and is equal to 36 in the case of the long block. In the case of the short block, N is equal to 12. In the processing at step S20, windowing processing is simultaneously performed according to the following formula (5):
Hi(n)=Zi(n)xc3x97W(n)xe2x80x83xe2x80x83(5)
where Hi(n) represents the result of window operation, and W(n) represents a window coefficient. Processing for overlapped portions is conducted on Hi(n), whereby the outputs of 18 samples Y(i, j) (0xe2x89xa6jxe2x89xa617) are obtained as the final outputs with respect to each band i. Hereinafter, the output of IMDCT operating portion 12 with respect to X(i, j) (0xe2x89xa6ixe2x89xa631, 0xe2x89xa6jxe2x89xa617) is defined as Y(i, j).
Subband composing portion 13 performs subband composition using PFB, and issues PCM (Pulse Code Modulation) data (i.e., reproduced sample data) which is time region signals (S22).
Referring to FIG. 4, detailed description will be given on subband composing processing (S21 in FIG. 3) which is executed in subband composing portion 13 for obtaining the time region signals of 32 samples. The subband composition is achieved by 512-tap PFB. The subband inputs of 32 samples are defined as Sj(i)=Y(i, j) (0xe2x89xa6ixe2x89xa631, j: arbitrary sample number) (S23). For calculating the vector V(m) (0xe2x89xa6mxe2x89xa663) for Sj(i), values in vector V(m) (0xe2x89xa6mxe2x89xa61024, initial value is 0), which are stored in V(0)xe2x88x92V(959) by performing the PFB processing several times, are moved to storage positions of V(64)xe2x88x92V(1023), respectively. Thus, data of V(960)xe2x88x92V(1023) are erased. Then, vector V(m) for Sj(i) is calculated in accordance with the following formula (6) (S25). N(m, i) is a constant determined by values m and i. Then, 512 data are taken out from V(m) (0xe2x89xa6mxe2x89xa61024), and are stored in variables U(k) (k: 0-511) (S26). From calculation of the formula (7) with U(k), 32 reproduced sample data (time region signals) are obtained (S27).                                           V            ⁡                          (              m              )                                =                                    ∑                              i                =                0                            31                        ⁢                                          N                ⁡                                  (                                      m                    ,                    i                                    )                                            ⁢                                                S                  j                                ⁡                                  (                  i                  )                                                                    ,                  0          ≤          m          ≤          63                                    (        6        )                                                      out            ⁡                          (              i              )                                =                                    ∑                              m                =                0                            15                        ⁢                                          U                ⁡                                  (                                      i                    +                                          32                      ⁢                      m                                                        )                                            ⁢                              D                ⁡                                  (                                      i                    +                                          32                      ⁢                      m                                                        )                                                                    ,                  0          ≤          i          ≤          31                                    (        7        )            
where D(k) (k: 0-511) is a window function, and out(i) is reproduced sample data. Subband composing portion 13 conducts the processing from S23 to S27 on each of the 18 samples (0xe2x89xa6jxe2x89xa617).
As described above, the arithmetic operations used for MP3 decoding are primarily multiplication and production-sum operations. In particular, the IMDCT processing and the subband composing processing using PFB require a large amount of operations for each processing, and the product-sum operations occupy a major part of the required operations. The above processing is performed many times for each granule. Therefore, the above two kinds of processing consume a major part of the decode processing time, and reduction in processing time has been required.
The invention has been developed for overcoming the above disadvantages, and it is an object of the invention to provide an MPEG-1 audio layer III (MP3) decoding device which can perform fast decoding of MP3 by performing fast inverse quantization of Huffman code data.
Another object of the invention is to provide an MPEG-1 audio layer III decoding device which can perform fast decoding of MP3 by performing fast butterfly operation with respect to inverse quantization signal.
Still another object of the invention is to provide an MPEG-1 audio layer III decoding device which can perform fast decoding of MP3 by performing fast IMDCT processing.
Yet another object of the invention is to provide an MPEG-1 audio layer III decoding device which can perform fast decoding of MP3 by performing fast subband composing processing using PFB.
According to an aspect of the invention, an MPEG-1 audio layer III decoding device includes a bit stream decomposing portion for decomposing an input bit stream of MPEG-1 audio layer III into side information including bit allocation information and Huffman table information, a scale factor and Huffman code data; a scale factor decoder connected to the bit stream decomposing portion, for decoding the scale factor decomposed from the bit-stream based on the side information; a Huffman decoder connected to the bit stream decomposing portion, for decoding Huffman code data decomposed from the bit-stream based on the Huffman table information included in the side information; a zero detecting portion connected to the Huffman decoder, for detecting a band of the Huffman code data all providing values of zero; an inverse quantizer connected to the Huffman decoder, the zero detecting portion, the bit stream decomposing portion and the scale factor decoder, for performing inverse quantizing processing on the Huffman code data based on the output of the zero detecting portion, the side information, the scale factor and the Huffman code data; and a hybrid filter bank portion connected to the inverse quantizer, for inversely mapping the output of the inverse quantizer to decode into a time region signal.
The inverse quantizer can eliminate the inverse quantizing processing for the band of the Huffman code data all providing the values of zero in the zero detecting portion. Therefore, the inverse quantizing processing can be executed fast. Thereby, decoding of the audio data portion of MP3 can be performed fast.
Preferably, the zero detecting portion includes a first zero detector connected to the Huffman decoder, for detecting the band of the Huffman code data all providing the values of zero; and a second zero detector connected to the Huffman decoder, for detecting a band of the Huffman code data not coded in MPEG-1 audio layer III.
Further preferably, the hybrid filter bank portion includes a butterfly operating portion connected to the inverse quantizer, for performing a butterfly operation on the inversely quantized signal issued from the inverse quantizer; an inverse modified discrete cosine transforming portion connected to the butterfly operating portion, for performing inverse modified discrete cosine transform processing on an operation result of the butterfly operating portion, and a subband composing portion connected to the inverse modified discrete cosine transforming portion, for performing subband composing processing using a polyphase filter bank on the operation result of the inverse modified discrete cosine transforming portion.
According to another aspect of the invention, an MPEG-1 audio layer III decoding device includes a bit stream decomposing portion for decomposing an input bit stream of MPEG-1 audio layer III into side information including bit allocation information and Huffman table information, a scale factor and Huffman code data; a scale factor decoder connected to the bit stream decomposing portion, for decoding the scale factor decomposed from the bit-stream based on the side information; a Huffman decoder connected to the bit stream decomposing portion, for decoding the Huffman code data decomposed from the bit-stream based on the Huffman table information included in the side information; a fast zero detector connected to the Huffman decoder, for detecting a band of the Huffman code data not coded in MPEG-1 audio layer III; an inverse quantizer connected to the Huffman decoder, the bit stream decomposing portion and the scale factor decoder, for performing inverse quantizing processing on the Huffman code data based on the side information, the scale factor and the Huffman code data; and a hybrid filter bank portion connected to the first zero detector and the inverse quantizer, for inversely mapping the output of the inverse quantizer to decode into a time region signal in accordance with the output of the first zero detector.
The hybrid filter bank portion can eliminate the inverse mapping of the output of the inverse quantizer for the band not coded in MP3 and detected by the first zero detector. Therefore, the inverse quantizing processing can be executed fast. Thereby, decoding of the audio data portion of MP3 can be performed fast.
Preferably, the hybrid filter bank portion includes a butterfly operating portion connected to the first zero detector and the inverse quantizer, for performing a butterfly operation on the inversely quantized signal issued from the inverse quantizer in accordance with the output of the first zero detector; an inverse modified discrete cosine transforming portion connected to the butterfly operating portion, for performing inverse modified discrete cosine transform processing on the operation result of the butterfly operating portion, and a subband composing portion connected to the inverse modified discrete cosine transforming portion, for performing subband composing processing using a polyphase filter bank on the operation result of the inverse modified discrete cosine transforming portion.
The butterfly operating portion can eliminate the butterfly operation on the inversely quantized signal for the band not coded in MP3 and detected by the first zero detector. Therefore, the butterfly operation can be executed fast. Thereby, decoding of the audio data portion of MP3 can be performed fast.
Further preferably, the hybrid filter bank portion includes a butterfly operating portion connected to the inverse quantizer, for performing a butterfly operation on the inversely quantized signal issued from the inverse quantizer; an inverse modified discrete cosine transforming portion connected to the first zero detector and the butterfly operating portion, for performing inverse modified discrete cosine transform processing on the operation result of the butterfly operating portion in accordance with the output of the first zero detector; and a subband composing portion connected to the inverse modified discrete cosine transforming portion, for performing subband composing processing using a polyphase filter bank on the operation result of the inverse modified discrete cosine transforming portion.
The inverse modified discrete cosine transforming portion can eliminate the inverse modified discrete cosine transforming operation on the butterfly operation result for the band not coded in MP3 and detected by the first zero detector. Therefore, the inverse modified discrete cosine transforming operation can be executed fast. Thereby, decoding of the audio data portion of MP3 can be performed fast.
Further preferably, the hybrid filter bank portion includes a butterfly operating portion connected to the inverse quantizer, for performing a butterfly operation on the inversely quantized signal issued from the inverse quantizer; an inverse modified discrete cosine transforming portion connected to the butterfly operating portion, for performing inverse modified discrete cosine transform processing on the operation result of the butterfly operating portion; and a subband composing portion connected to the first zero detector and the inverse modified discrete cosine transforming portion, for performing subband composing processing on the operation result of the inverse modified discrete cosine transforming portion using a polyphase filter bank in accordance with the output of the first zero detector.
The subband composing processing portion can eliminate the subband composing processing using the polyphase filter bank on the operation result of inverse modified discrete cosine transforming operation for the band not coded in MP3 and detected by the first zero detector. Therefore, the subband composing processing operation can be executed fast. Thereby, decoding of the audio data portion of MP3 can be performed fast.
According to yet another aspect of the invention, an MPEG-1 audio layer III decoding device includes a bit stream decomposing portion for decomposing an input bit stream of MPEG-1 audio layer III into side information including bit allocation information and Huffman table information, a scale factor and Huffman code data; a scale factor decoder connected to the bit stream decomposing portion for decoding the scale factor decomposed from the bit-stream based on the side information; a Huffman decoder connected to the bit stream decomposing portion, for decoding the Huffman code data decomposed from the bit stream based on the Huffman table information included in the side information; an inverse quantizer connected to the Huffman decoder, the bit stream decomposing portion and the scale factor decoder, for performing inverse quantizing processing on the Hoffman code data based on the side information, the scale factor and the Huff-man code data; a butterfly operating portion connected to the inverse quantizer, for performing a butterfly operation on the inversely quantized signal issued from the inverse quantizer; an inverse modified discrete cosine transforming portion connected to the butterfly operating portion, for performing inverse modified discrete cosine transform processing on the operation result of the butterfly operating portion; and a subband composing portion connected to the inverse modified discrete cosine transforming portion, for performing subband composing processing using a polyphase filter bank on the operation result of the inverse modified discrete cosine transforming portion, wherein the inverse modified discrete cosine transforming portion includes a cumulative sum calculating portion connected to the butterfly operating portion, receiving the operation result of the butterfly operating portion, calculating a predetermined number of cumulative sums each formed of products of the operation results and a predetermined coefficient, and obtaining another predetermined number of cumulative sums from the predetermined number of cumulative sums, absolute values of the another predetermined number of cumulative sums is equal to absolute values of the predetermined number of cumulative sums, respectively, and a window function processing portion connected to the cumulative sum calculating portion for multiplying each of the cumulative sums with a window function selected in accordance with a predetermined rule.
In the operation of obtaining the cumulative sums of the products of the operation results and the predetermined coefficient, the inverse modified discrete cosine transforming portion eliminates the arithmetic operation when it is already determined that the absolute value of the cumulative sum will be equal to the absolute value of the previously obtained cumulative sum. Therefore, the inverse modified discrete cosine transforming processing can be executed fast. Thereby, decoding of the audio data portion of MP3 can be performed fast.
The foregoing and other objects, features, aspects and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings.